/**
 *日期格式化，返回格式，yyyy-mm-dd
 */
 const formatDate = function (date) {
  const y = date.getFullYear()
  let m = date.getMonth() + 1
  m = m < 10 ? ('0' + m) : m
  let d = date.getDate()
  d = d < 10 ? ('0' + d) : d
  return y + '-' + m + '-' + d
}
 
/**
 * 计算当前日期的 dayCount 天
 */
const GetDateStr = (dayCount) => {
  const dd = new Date()
  dd.setDate(dd.getDate() + dayCount) // 获取dayCount天后的日期
  const y = dd.getFullYear()
  const m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1)// 获取当前月份的日期，不足10补0
  const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号，不足10补0
  return y + '-' + m + '-' + d
}
 
const now = new Date() // 当前日期
// 今天本周的第几天
let nowDayOfWeek = now.getDay()
// 0 代表星期日
if (nowDayOfWeek === 0) {
  nowDayOfWeek = 7
}
const nowMonth = now.getMonth() // 当前月(0~11)
const nowDay = now.getDate() // 当前多少号(1~31)
const nowYear = now.getFullYear() // 当前年
 
// 获取本周开始时间和结束时间
const getThisWeek = () => {
  const t1 = GetDateStr(-(nowDayOfWeek - 1))
  const t2 = GetDateStr(+(7 - nowDayOfWeek))
  return [t1, t2]
}
 
// 获取上周开始时间和结束时间
const getLastWeek = () => {
  const t1 = GetDateStr(-(nowDayOfWeek - 1 + 7))
  const t2 = GetDateStr(-nowDayOfWeek)
  return [t1, t2]
}
 
// 获取本月开始时间和结束时间
const getThisMonth = () => {
  // 获取本月开始时间格式 new Date(年, 月(0~11), 1)
  const t1 = formatDate(new Date(nowYear, nowMonth, 1))
  // 获取月总天数格式  new Date(年, 月(1~12), 0).getDate()
  const thisTotalDay = new Date(nowYear, nowMonth + 1, 0).getDate() // 获取本月总天数(1~31)
  // 获取本月结束时间格式 new Date(年, 月(0~11), 本月总天数)
  const t2 = formatDate(new Date(nowYear, nowMonth, thisTotalDay))
  return [t1, t2]
}

function getThisWeekTime() {
  return new Date(new Date().toLocaleDateString()).getTime() - (new Date().getDay() - 1) * 24 * 60 * 60 * 1000
}

/**
 * 获取本月开始时间
 * @returns {Number}
 */
function getStartTimeByThisMonth() {
  return new Date(new Date().getFullYear(), new Date().getMonth(), 1).getTime();
}

function getDaysByThisMonth(date) {
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  var day = new Date(year, month, 0);
  return day.getDate();
}

// 获取上个月开始时间和结束时间
const getLastMonth = () => {
  // 获取上月总天数
  let lastTotalDay = ''
  // 如果是一月份
  if (nowMonth === 0) {
    // 获取去年12月总共有多少天
    lastTotalDay = new Date(nowYear - 1, 12, 0).getDate()
  } else {
    // 获取上月总共有多少天
    lastTotalDay = new Date(nowYear, nowMonth, 0).getDate()
  }
  // 上月总天数加上当前多少号 前的 日期
  const t1 = GetDateStr(-(nowDay - 1 + lastTotalDay))
  const t2 = GetDateStr(-nowDay)
  return [t1, t2]
}

export {
  getThisWeek,
  getLastWeek,
  getThisMonth,
  getThisWeekTime,
  getDaysByThisMonth,
  getStartTimeByThisMonth,
  getLastMonth
}